﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;


namespace syc.Store.报表
{
    public partial class 成品收发存报表 : System.Web.UI.Page
    {
        protected HSSFWorkbook hssfworkbook;
        protected double 一分厂油管入库量;
        protected int 一分厂油管入库支数;
        protected double 一分厂套管入库量;
        protected int 一分厂套管入库支数;
        protected double 二分厂油管入库量;
        protected int 二分厂油管入库支数;
        protected double 二分厂套管入库量;
        protected int 二分厂套管入库支数;
        protected double 五分厂油管入库量;
        protected int 五分厂油管入库支数;
        protected double 五分厂套管入库量;
        protected int 五分厂套管入库支数;

        protected double 一分厂油管出库量;
        protected int 一分厂油管出库支数;
        protected double 一分厂套管出库量;
        protected int 一分厂套管出库支数;
        protected double 二分厂油管出库量;
        protected int 二分厂油管出库支数;
        protected double 二分厂套管出库量;
        protected int 二分厂套管出库支数;
        protected double 五分厂油管出库量;
        protected int 五分厂油管出库支数;
        protected double 五分厂套管出库量;
        protected int 五分厂套管出库支数;


        protected double 上期一分厂油管入库量;
        protected int 上期一分厂油管入库支数;
        protected double 上期一分厂套管入库量;
        protected int 上期一分厂套管入库支数;
        protected double 上期二分厂油管入库量;
        protected int 上期二分厂油管入库支数;
        protected double 上期二分厂套管入库量;
        protected int 上期二分厂套管入库支数;
        protected double 上期五分厂油管入库量;
        protected int 上期五分厂油管入库支数;
        protected double 上期五分厂套管入库量;
        protected int 上期五分厂套管入库支数;

        protected double 上期一分厂油管出库量;
        protected int 上期一分厂油管出库支数;
        protected double 上期一分厂套管出库量;
        protected int 上期一分厂套管出库支数;
        protected double 上期二分厂油管出库量;
        protected int 上期二分厂油管出库支数;
        protected double 上期二分厂套管出库量;
        protected int 上期二分厂套管出库支数;
        protected double 上期五分厂油管出库量;
        protected int 上期五分厂油管出库支数;
        protected double 上期五分厂套管出库量;
        protected int 上期五分厂套管出库支数;


        protected double 油管本期收入重量;
        protected int 油管本期收入支数;
        protected double 套管本期收入重量;
        protected int 套管本期收入支数;

        protected double 油管本期发出重量;
        protected int 油管本期发出支数;
        protected double 套管本期发出重量;
        protected int 套管本期发出支数;

        protected double 油管本期结存重量;
        protected int 油管本期结存支数;
        protected double 套管本期结存重量;
        protected int 套管本期结存支数;

        protected double 油管上期结存重量;
        protected int 油管上期结存支数;
        protected double 套管上期结存重量;
        protected int 套管上期结存支数;


        //--------------------------
        protected double 一分厂油管N80入库量;
        protected int 一分厂油管N80入库支数;
        protected double 一分厂套管N80入库量;
        protected int 一分厂套管N80入库支数;
        protected double 二分厂油管N80入库量;
        protected int 二分厂油管N80入库支数;
        protected double 二分厂套管N80入库量;
        protected int 二分厂套管N80入库支数;
        protected double 五分厂油管N80入库量;
        protected int 五分厂油管N80入库支数;
        protected double 五分厂套管N80入库量;
        protected int 五分厂套管N80入库支数;

        protected double 一分厂油管N80出库量;
        protected int 一分厂油管N80出库支数;
        protected double 一分厂套管N80出库量;
        protected int 一分厂套管N80出库支数;
        protected double 二分厂油管N80出库量;
        protected int 二分厂油管N80出库支数;
        protected double 二分厂套管N80出库量;
        protected int 二分厂套管N80出库支数;
        protected double 五分厂油管N80出库量;
        protected int 五分厂油管N80出库支数;
        protected double 五分厂套管N80出库量;
        protected int 五分厂套管N80出库支数;


        protected double 上期一分厂油管N80入库量;
        protected int 上期一分厂油管N80入库支数;
        protected double 上期一分厂套管N80入库量;
        protected int 上期一分厂套管N80入库支数;
        protected double 上期二分厂油管N80入库量;
        protected int 上期二分厂油管N80入库支数;
        protected double 上期二分厂套管N80入库量;
        protected int 上期二分厂套管N80入库支数;
        protected double 上期五分厂油管N80入库量;
        protected int 上期五分厂油管N80入库支数;
        protected double 上期五分厂套管N80入库量;
        protected int 上期五分厂套管N80入库支数;

        protected double 上期一分厂油管N80出库量;
        protected int 上期一分厂油管N80出库支数;
        protected double 上期一分厂套管N80出库量;
        protected int 上期一分厂套管N80出库支数;
        protected double 上期二分厂油管N80出库量;
        protected int 上期二分厂油管N80出库支数;
        protected double 上期二分厂套管N80出库量;
        protected int 上期二分厂套管N80出库支数;
        protected double 上期五分厂油管N80出库量;
        protected int 上期五分厂油管N80出库支数;
        protected double 上期五分厂套管N80出库量;
        protected int 上期五分厂套管N80出库支数;


        protected double 油管N80本期收入重量;
        protected int 油管N80本期收入支数;
        protected double 套管N80本期收入重量;
        protected int 套管N80本期收入支数;

        protected double 油管N80本期发出重量;
        protected int 油管N80本期发出支数;
        protected double 套管N80本期发出重量;
        protected int 套管N80本期发出支数;

        protected double 油管N80本期结存重量;
        protected int 油管N80本期结存支数;
        protected double 套管N80本期结存重量;
        protected int 套管N80本期结存支数;

        protected double 油管N80上期结存重量;
        protected int 油管N80上期结存支数;
        protected double 套管N80上期结存重量;
        protected int 套管N80上期结存支数;



        protected DateTime 本期月初日期;
        protected DateTime 本期月末日期;
        protected DateTime 上期初;
        protected DateTime 上期末;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.Year0.SelectedValue = DateTime.Today.Year.ToString();
                this.Month0.SelectedValue = DateTime.Today.Month.ToString();
                GetData(this.Year0.SelectedValue, this.Month0.SelectedValue);
            }
            Button_Query_Click(null, null);
        }


        public bool GetData(string yy, string mm)
        {
            SqlConnection Conn = new SqlConnection();
            Conn.ConnectionString = ConfigurationManager.ConnectionStrings["SCMConnectionString1"].ConnectionString;
            DataSet ds = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter("select 起始日期,截止日期 from 生产月设置 where 年度='" + yy + "' and 月份='" + mm + "'", Conn);
            sda.Fill(ds);
            try
            {
                this.Message.Text = ".查看成功";
                return true;
            }
            catch
            {
                this.Message.Text = ".该月没有设置";               
                return false;
            }
        }
        protected void Button_Query_Click(object sender, EventArgs e)
        {                   
           
            if (!GetData(this.Year0.Text,this.Month0.Text))           
            {
                return;
            }
           
            SqlConnection Conn = new SqlConnection();
            Conn.ConnectionString = ConfigurationManager.ConnectionStrings["SCMConnectionString1"].ConnectionString;
            Conn.Open();
            SqlCommand Cmd = new SqlCommand();
            Cmd.Connection = Conn;
            //获得一二五分厂油管入库量
            string sql = @"
            declare @一分厂油管入库量 float
            declare @一分厂油管n80入库量 float
            declare @一分厂油管入库支数 int
            declare @一分厂油管n80入库支数 int
            declare @一分厂套管入库量 float
            declare @一分厂套管n80入库量 float
            declare @一分厂套管入库支数 int
            declare @一分厂套管n80入库支数 int

            declare @二分厂油管入库量 float
            declare @二分厂油管n80入库量 float
            declare @二分厂油管入库支数 int
            declare @二分厂油管n80入库支数 int
            declare @二分厂套管入库量 float
            declare @二分厂套管n80入库量 float
            declare @二分厂套管入库支数 int
            declare @二分厂套管n80入库支数 int
            declare @五分厂油管入库量 float
            declare @五分厂油管n80入库量 float
            declare @五分厂油管入库支数 int
            declare @五分厂油管n80入库支数 int
            declare @五分厂套管入库量 float
            declare @五分厂套管n80入库量 float
            declare @五分厂套管入库支数 int
            declare @五分厂套管n80入库支数 int
            
            declare @本期月初日期 datetime
            declare @本期月末日期 datetime
            select @本期月初日期=起始日期,@本期月末日期=截止日期 from 生产月设置 where 年度=@年度 and 月份=@月份 and 分厂=0
            
            select @一分厂油管入库量=round(isnull(sum(重量)/1000,0),3),@一分厂油管入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=1 and 生产线=101 and 入库日期 between @本期月初日期 and @本期月末日期 
            select @一分厂套管入库量=round(isnull(sum(重量)/1000,0),3),@一分厂套管入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=2 and 生产线=101 and 入库日期 between @本期月初日期 and @本期月末日期
            select @二分厂油管入库量=round(isnull(sum(重量)/1000,0),3),@二分厂油管入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=1 and 生产线=201 and 入库日期 between @本期月初日期 and @本期月末日期
            select @二分厂套管入库量=round(isnull(sum(重量)/1000,0),3),@二分厂套管入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=2 and 生产线=201 and 入库日期 between @本期月初日期 and @本期月末日期
            select @五分厂油管入库量=round(isnull(sum(重量)/1000,0),3),@五分厂油管入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=1 and 生产线 between 500 and 599 and 入库日期 between @本期月初日期 and @本期月末日期 
            select @五分厂套管入库量=round(isnull(sum(重量)/1000,0),3),@五分厂套管入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=2 and 生产线 between 500 and 599 and 入库日期 between @本期月初日期 and @本期月末日期 

            select @一分厂油管n80入库量=round(isnull(sum(重量)/1000,0),3),@一分厂油管n80入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=3 and 生产线=101 and 入库日期 between @本期月初日期 and @本期月末日期 
            select @一分厂套管n80入库量=round(isnull(sum(重量)/1000,0),3),@一分厂套管n80入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=4 and 生产线=101 and 入库日期 between @本期月初日期 and @本期月末日期
            select @二分厂油管n80入库量=round(isnull(sum(重量)/1000,0),3),@二分厂油管n80入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=3 and 生产线=201 and 入库日期 between @本期月初日期 and @本期月末日期
            select @二分厂套管n80入库量=round(isnull(sum(重量)/1000,0),3),@二分厂套管n80入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=4 and 生产线=201 and 入库日期 between @本期月初日期 and @本期月末日期
            select @五分厂油管n80入库量=round(isnull(sum(重量)/1000,0),3),@五分厂油管n80入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=3 and 生产线 between 500 and 599 and 入库日期 between @本期月初日期 and @本期月末日期 
            select @五分厂套管n80入库量=round(isnull(sum(重量)/1000,0),3),@五分厂套管n80入库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=4 and 生产线 between 500 and 599 and 入库日期 between @本期月初日期 and @本期月末日期 
            select @一分厂油管入库量,@一分厂油管入库支数,@一分厂套管入库量,@一分厂套管入库支数
           ,@二分厂油管入库量,@二分厂油管入库支数,@二分厂套管入库量,@二分厂套管入库支数
           ,@五分厂油管入库量,@五分厂油管入库支数,@五分厂套管入库量,@五分厂套管入库支数
           ,@一分厂油管n80入库量,@一分厂油管n80入库支数,@一分厂套管n80入库量,@一分厂套管n80入库支数
           ,@二分厂油管n80入库量,@二分厂油管n80入库支数,@二分厂套管n80入库量,@二分厂套管n80入库支数
           ,@五分厂油管n80入库量,@五分厂油管n80入库支数,@五分厂套管n80入库量,@五分厂套管n80入库支数
           ";         
            sql = sql.Replace("@年度", this.Year0.Text);
            sql = sql.Replace("@月份", this.Month0.Text);
            Cmd.CommandText = sql;
            SqlDataReader Reader = Cmd.ExecuteReader();
            if (Reader.Read())
            {
                一分厂油管入库量 = Reader.GetDouble(0);
                一分厂油管入库支数 = Reader.GetInt32(1);
                一分厂套管入库量 = Reader.GetDouble(2);
                一分厂套管入库支数 = Reader.GetInt32(3);
                二分厂油管入库量 = Reader.GetDouble(4);
                二分厂油管入库支数 = Reader.GetInt32(5);
                二分厂套管入库量 = Reader.GetDouble(6);
                二分厂套管入库支数 = Reader.GetInt32(7);
                五分厂油管入库量 = Reader.GetDouble(8);
                五分厂油管入库支数 = Reader.GetInt32(9);
                五分厂套管入库量 = Reader.GetDouble(10);
                五分厂套管入库支数 = Reader.GetInt32(11);

                //----------------n80
                一分厂油管N80入库量 = Reader.GetDouble(12);
                一分厂油管N80入库支数 = Reader.GetInt32(13);
                一分厂套管N80入库量 = Reader.GetDouble(14);
                一分厂套管N80入库支数 = Reader.GetInt32(15);
                二分厂油管N80入库量 = Reader.GetDouble(16);
                二分厂油管N80入库支数 = Reader.GetInt32(17);
                二分厂套管N80入库量 = Reader.GetDouble(18);
                二分厂套管N80入库支数 = Reader.GetInt32(19);
                五分厂油管N80入库量 = Reader.GetDouble(20);
                五分厂油管N80入库支数 = Reader.GetInt32(21);
                五分厂套管N80入库量 = Reader.GetDouble(22);
                五分厂套管N80入库支数 = Reader.GetInt32(23);
            }
            Reader.Close();
            //获得一二五分厂油管出库量
            string sql1 = @"
            declare @一分厂油管出库量 float
            declare @一分厂油管n80出库量 float
            declare @一分厂油管出库支数 int
            declare @一分厂油管n80出库支数 int
            declare @一分厂套管出库量 float
            declare @一分厂套管n80出库量 float
            declare @一分厂套管出库支数 int
            declare @一分厂套管n80出库支数 int
            
            declare @二分厂油管出库量 float
            declare @二分厂油管n80出库量 float
            declare @二分厂油管出库支数 int
            declare @二分厂油管n80出库支数 int
            declare @二分厂套管出库量 float
            declare @二分厂套管n80出库量 float
            declare @二分厂套管出库支数 int
            declare @二分厂套管n80出库支数 int
            declare @五分厂油管出库量 float
            declare @五分厂油管n80出库量 float
            declare @五分厂油管出库支数 int
            declare @五分厂油管n80出库支数 int
            declare @五分厂套管出库量 float
            declare @五分厂套管n80出库量 float
            declare @五分厂套管出库支数 int
            declare @五分厂套管n80出库支数 int

            declare @本期月初日期 datetime
            declare @本期月末日期 datetime

            select @本期月初日期=起始日期,@本期月末日期=截止日期 from 生产月设置 where 年度=@年度 and 月份=@月份 and 分厂=0
            select @一分厂油管出库量=round(isnull(sum(重量)/1000,0),3),@一分厂油管出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=1 and 生产线=101 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @一分厂套管出库量=round(isnull(sum(重量)/1000,0),3),@一分厂套管出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=2 and 生产线=101 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @二分厂油管出库量=round(isnull(sum(重量)/1000,0),3),@二分厂油管出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=1 and 生产线=201 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @二分厂套管出库量=round(isnull(sum(重量)/1000,0),3),@二分厂套管出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=2 and 生产线=201 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @五分厂油管出库量=round(isnull(sum(重量)/1000,0),3),@五分厂油管出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=1 and 生产线 between 500 and 599 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @五分厂套管出库量=round(isnull(sum(重量)/1000,0),3),@五分厂套管出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=2 and 生产线 between 500 and 599 and 出库日期 between @本期月初日期 and @本期月末日期 

            select @一分厂油管n80出库量=round(isnull(sum(重量)/1000,0),3),@一分厂油管n80出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=3 and 生产线=101 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @一分厂套管n80出库量=round(isnull(sum(重量)/1000,0),3),@一分厂套管n80出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=4 and 生产线=101 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @二分厂油管n80出库量=round(isnull(sum(重量)/1000,0),3),@二分厂油管n80出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=3 and 生产线=201 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @二分厂套管n80出库量=round(isnull(sum(重量)/1000,0),3),@二分厂套管n80出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=4 and 生产线=201 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @五分厂油管n80出库量=round(isnull(sum(重量)/1000,0),3),@五分厂油管n80出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=3 and 生产线 between 500 and 599 and 出库日期 between @本期月初日期 and @本期月末日期 
            select @五分厂套管n80出库量=round(isnull(sum(重量)/1000,0),3),@五分厂套管n80出库支数=isnull(sum(支数),0) from 产品库存 where 产品类别ID=4 and 生产线 between 500 and 599 and 出库日期 between @本期月初日期 and @本期月末日期 
            
            select @一分厂油管出库量,@一分厂油管出库支数,@一分厂套管出库量,@一分厂套管出库支数
           ,@二分厂油管出库量,@二分厂油管出库支数,@二分厂套管出库量,@二分厂套管出库支数
           ,@五分厂油管出库量,@五分厂油管出库支数,@五分厂套管出库量,@五分厂套管出库支数
          , @一分厂油管n80出库量,@一分厂油管n80出库支数,@一分厂套管n80出库量,@一分厂套管n80出库支数
           ,@二分厂油管n80出库量,@二分厂油管n80出库支数,@二分厂套管n80出库量,@二分厂套管n80出库支数
           ,@五分厂油管n80出库量,@五分厂油管n80出库支数,@五分厂套管n80出库量,@五分厂套管n80出库支数
            ";
            sql1 = sql1.Replace("@年度", this.Year0.Text);
            sql1 = sql1.Replace("@月份", this.Month0.Text);
            Cmd.CommandText = sql1;
            Reader= Cmd.ExecuteReader();
            if (Reader.Read())
            {
                一分厂油管出库量 = Reader.GetDouble(0) ;
                一分厂油管出库支数 = Reader.GetInt32(1);
                一分厂套管出库量 = Reader.GetDouble(2) ;
                一分厂套管出库支数 = Reader.GetInt32(3);
                二分厂油管出库量 = Reader.GetDouble(4) ;
                二分厂油管出库支数 = Reader.GetInt32(5);
                二分厂套管出库量 = Reader.GetDouble(6);
                二分厂套管出库支数 = Reader.GetInt32(7);
                五分厂油管出库量 = Reader.GetDouble(8);
                五分厂油管出库支数 = Reader.GetInt32(9);
                五分厂套管出库量 = Reader.GetDouble(10);
                五分厂套管出库支数 = Reader.GetInt32(11);
               //----------------n80
                一分厂油管N80出库量 = Reader.GetDouble(12);
                一分厂油管N80出库支数 = Reader.GetInt32(13);
                一分厂套管N80出库量 = Reader.GetDouble(14);
                一分厂套管N80出库支数 = Reader.GetInt32(15);
                二分厂油管N80出库量 = Reader.GetDouble(16);
                二分厂油管N80出库支数 = Reader.GetInt32(17);
                二分厂套管N80出库量 = Reader.GetDouble(18);
                二分厂套管N80出库支数 = Reader.GetInt32(19);
                五分厂油管N80出库量 = Reader.GetDouble(20);
                五分厂油管N80出库支数 = Reader.GetInt32(21);
                五分厂套管N80出库量 = Reader.GetDouble(22);
                五分厂套管N80出库支数 = Reader.GetInt32(23);
            }
            Reader.Close();
            //本期收入           
            string sql2 = @"select dbo.产品本期收入(@年度,@月份,1,0),dbo.产品本期收入(@年度,@月份,1,1),dbo.产品本期收入(@年度,@月份,2,0),dbo.产品本期收入(@年度,@月份,2,1),dbo.产品本期收入(@年度,@月份,3,0),dbo.产品本期收入(@年度,@月份,3,1),dbo.产品本期收入(@年度,@月份,4,0),dbo.产品本期收入(@年度,@月份,4,1)";
            sql2 = sql2.Replace("@年度", this .Year0.Text);
            sql2 = sql2.Replace("@月份",this.Month0.Text);
            Cmd.CommandText =sql2;
            Reader= Cmd.ExecuteReader();
            if (Reader.Read())
            {
                油管本期收入重量 = Reader.GetDouble(0);
                油管本期收入支数 = int.Parse(Reader.GetDouble(1).ToString());
                套管本期收入重量 = Reader.GetDouble(2);
                套管本期收入支数 = int.Parse(Reader.GetDouble(3).ToString());
                //---------n80
                油管N80本期收入重量 = Reader.GetDouble(4);
                油管N80本期收入支数 = int.Parse(Reader.GetDouble(5).ToString());
                套管N80本期收入重量 = Reader.GetDouble(6);
                套管N80本期收入支数 = int.Parse(Reader.GetDouble(7).ToString());
            }
            Reader.Close();
            //本期发出      
            string sql3 = @"select dbo.产品本期发出(@年度,@月份,1,0),dbo.产品本期发出(@年度,@月份,1,1),dbo.产品本期发出(@年度,@月份,2,0),dbo.产品本期发出(@年度,@月份,2,1),dbo.产品本期发出(@年度,@月份,3,0),dbo.产品本期发出(@年度,@月份,3,1),dbo.产品本期发出(@年度,@月份,4,0),dbo.产品本期发出(@年度,@月份,4,1)";
            sql3 = sql3.Replace("@年度", this .Year0.Text);
            sql3 = sql3.Replace("@月份",this.Month0.Text);
            Cmd.CommandText =sql3;
            Reader= Cmd.ExecuteReader();
            if (Reader.Read())
            {
                油管本期发出重量 = Reader.GetDouble(0);
                油管本期发出支数 = int.Parse(Reader.GetDouble(1).ToString());
                套管本期发出重量 = Reader.GetDouble(2);
                套管本期发出支数 = int.Parse(Reader.GetDouble(3).ToString());
                //---------n80
                油管N80本期发出重量 = Reader.GetDouble(4);
                油管N80本期发出支数 = int.Parse(Reader.GetDouble(5).ToString());
                套管N80本期发出重量 = Reader.GetDouble(6);
                套管N80本期发出支数 = int.Parse(Reader.GetDouble(7).ToString());
            }
            Reader.Close();
            //本期结存
            string sql4 = @"select dbo.产品本期结存(@年度,@月份,1,0),dbo.产品本期结存(@年度,@月份,1,1),dbo.产品本期结存(@年度,@月份,2,0),dbo.产品本期结存(@年度,@月份,2,1),dbo.产品本期结存(@年度,@月份,3,0),dbo.产品本期结存(@年度,@月份,3,1),dbo.产品本期结存(@年度,@月份,4,0),dbo.产品本期结存(@年度,@月份,4,1)";
            sql4 = sql4.Replace("@年度", this.Year0.Text);
            sql4 = sql4.Replace("@月份", this.Month0.Text);
            Cmd.CommandText = sql4;
            Reader = Cmd.ExecuteReader();
            if (Reader.Read())
            {
                油管本期结存重量 = Reader.GetDouble(0);
                油管本期结存支数 = int.Parse(Reader.GetDouble(1).ToString());
                套管本期结存重量 = Reader.GetDouble(2);
                套管本期结存支数 = int.Parse(Reader.GetDouble(3).ToString());
                //-------------n80
                油管N80本期结存重量 = Reader.GetDouble(4);
                油管N80本期结存支数 = int.Parse(Reader.GetDouble(5).ToString());
                套管N80本期结存重量 = Reader.GetDouble(6);
                套管N80本期结存支数 = int.Parse(Reader.GetDouble(7).ToString());
            }
            Reader.Close();
            油管上期结存重量=油管本期结存重量+油管本期发出重量-油管本期收入重量;
            油管上期结存支数=油管本期结存支数+油管本期发出支数-油管本期收入支数;
            套管上期结存重量=套管本期结存重量+套管本期发出重量-套管本期收入重量;
            套管上期结存支数=套管本期结存支数+套管本期发出支数-套管本期收入支数;
            //-----------n80
            油管N80上期结存重量 = 油管N80本期结存重量 + 油管N80本期发出重量 - 油管N80本期收入重量;
            油管N80上期结存支数 = 油管N80本期结存支数 + 油管N80本期发出支数 - 油管N80本期收入支数;
            套管N80上期结存重量 = 套管N80本期结存重量 + 套管N80本期发出重量 - 套管N80本期收入重量;
            套管N80上期结存支数 = 套管N80本期结存支数 + 套管N80本期发出支数 - 套管N80本期收入支数;
            Conn.Close();
            Reader.Dispose();
            Cmd.Dispose();
            Conn.Dispose();
        }

        protected void Month0_SelectedIndexChanged(object sender, EventArgs e)
        {
                    
        }

        protected void InitializeWorkbook()
        {

            FileStream file = new FileStream(HttpContext.Current.Server.MapPath("模板/物资报表模板.xls"), FileMode.Open, FileAccess.Read);

            hssfworkbook = new HSSFWorkbook(file);

            DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
            dsi.Company = "产成品收、发、存月报";
            hssfworkbook.DocumentSummaryInformation = dsi;

            SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
            si.Subject = "报表";
            si.Title = "产成品收、发、存月报";
            hssfworkbook.SummaryInformation = si;
        }
        protected void WriteToFile()
        {
            Response.ContentType = "application/ms-excel";
            Response.AddHeader("content-disposition", "attachment; filename=\"" + DateTime.Today.ToShortDateString() + ".xls\"");
            hssfworkbook.Write(Response.OutputStream);
        }
        protected void Button_Save_Click(object sender, EventArgs e)
        {
            InitializeWorkbook();
            HSSFSheet sheet1 = hssfworkbook.GetSheet("产成品收发存报表");
            Button_Query_Click(null, null);
            sheet1.GetRow(2).GetCell(12).SetCellValue(DateTime.Now.ToString("yyyy-MM-dd"));
            sheet1.GetRow(5).GetCell(3).SetCellValue(套管上期结存重量);
            sheet1.GetRow(5).GetCell(4).SetCellValue(一分厂套管入库量.ToString("0.000"));
            sheet1.GetRow(5).GetCell(5).SetCellValue(二分厂套管入库量.ToString("0.000"));
            sheet1.GetRow(5).GetCell(6).SetCellValue(五分厂套管入库量.ToString("0.000"));
            sheet1.GetRow(5).GetCell(7).SetCellValue(套管本期收入重量);
            sheet1.GetRow(5).GetCell(8).SetCellValue(一分厂套管出库量.ToString("0.000"));
            sheet1.GetRow(5).GetCell(9).SetCellValue(二分厂套管出库量.ToString("0.000"));
            sheet1.GetRow(5).GetCell(10).SetCellValue(五分厂套管出库量.ToString("0.000"));
            sheet1.GetRow(5).GetCell(11).SetCellValue(套管本期发出重量);
            sheet1.GetRow(5).GetCell(12).SetCellValue(套管本期结存重量);

            sheet1.GetRow(6).GetCell(3).SetCellValue(套管上期结存支数);
            sheet1.GetRow(6).GetCell(4).SetCellValue(一分厂套管入库支数);
            sheet1.GetRow(6).GetCell(5).SetCellValue(二分厂套管入库支数);
            sheet1.GetRow(6).GetCell(6).SetCellValue(五分厂套管入库支数);
            sheet1.GetRow(6).GetCell(7).SetCellValue(套管本期收入支数);
            sheet1.GetRow(6).GetCell(8).SetCellValue(一分厂套管出库支数);
            sheet1.GetRow(6).GetCell(9).SetCellValue(二分厂套管出库支数);
            sheet1.GetRow(6).GetCell(10).SetCellValue(五分厂套管出库支数);
            sheet1.GetRow(6).GetCell(11).SetCellValue(套管本期发出支数);
            sheet1.GetRow(6).GetCell(12).SetCellValue(套管本期结存支数);

            sheet1.GetRow(8).GetCell(3).SetCellValue(油管上期结存重量);
            sheet1.GetRow(8).GetCell(4).SetCellValue(一分厂油管入库量.ToString("0.000"));
            sheet1.GetRow(8).GetCell(5).SetCellValue(二分厂油管入库量.ToString("0.000"));
            sheet1.GetRow(8).GetCell(6).SetCellValue(五分厂油管入库量.ToString("0.000"));
            sheet1.GetRow(8).GetCell(7).SetCellValue(油管本期收入重量);
            sheet1.GetRow(8).GetCell(8).SetCellValue(一分厂油管出库量.ToString("0.000"));
            sheet1.GetRow(8).GetCell(9).SetCellValue(二分厂油管出库量.ToString("0.000"));
            sheet1.GetRow(8).GetCell(10).SetCellValue(五分厂油管出库量.ToString("0.000"));
            sheet1.GetRow(8).GetCell(11).SetCellValue(油管本期发出重量);
            sheet1.GetRow(8).GetCell(12).SetCellValue(油管本期结存重量);

            sheet1.GetRow(9).GetCell(3).SetCellValue(油管上期结存支数);
            sheet1.GetRow(9).GetCell(4).SetCellValue(一分厂油管入库支数);
            sheet1.GetRow(9).GetCell(5).SetCellValue(二分厂油管入库支数);
            sheet1.GetRow(9).GetCell(6).SetCellValue(五分厂油管入库支数);
            sheet1.GetRow(9).GetCell(7).SetCellValue(油管本期收入支数);
            sheet1.GetRow(9).GetCell(8).SetCellValue(一分厂油管出库支数);
            sheet1.GetRow(9).GetCell(9).SetCellValue(二分厂油管出库支数);
            sheet1.GetRow(9).GetCell(10).SetCellValue(五分厂油管出库支数);
            sheet1.GetRow(9).GetCell(11).SetCellValue(油管本期发出支数);
            sheet1.GetRow(9).GetCell(12).SetCellValue(油管本期结存支数);
            //--------------n80
            sheet1.GetRow(11).GetCell(3).SetCellValue(套管N80上期结存重量);
            sheet1.GetRow(11).GetCell(4).SetCellValue(一分厂套管N80入库量.ToString("0.000"));
            sheet1.GetRow(11).GetCell(5).SetCellValue(二分厂套管N80入库量.ToString("0.000"));
            sheet1.GetRow(11).GetCell(6).SetCellValue(五分厂套管N80入库量.ToString("0.000"));
            sheet1.GetRow(11).GetCell(7).SetCellValue(套管N80本期收入重量);
            sheet1.GetRow(11).GetCell(8).SetCellValue(一分厂套管N80出库量.ToString("0.000"));
            sheet1.GetRow(11).GetCell(9).SetCellValue(二分厂套管N80出库量.ToString("0.000"));
            sheet1.GetRow(11).GetCell(10).SetCellValue(五分厂套管N80出库量.ToString("0.000"));
            sheet1.GetRow(11).GetCell(11).SetCellValue(套管N80本期发出重量);
            sheet1.GetRow(11).GetCell(12).SetCellValue(套管N80本期结存重量);

            sheet1.GetRow(12).GetCell(3).SetCellValue(套管N80上期结存支数);
            sheet1.GetRow(12).GetCell(4).SetCellValue(一分厂套管N80入库支数);
            sheet1.GetRow(12).GetCell(5).SetCellValue(二分厂套管N80入库支数);
            sheet1.GetRow(12).GetCell(6).SetCellValue(五分厂套管N80入库支数);
            sheet1.GetRow(12).GetCell(7).SetCellValue(套管N80本期收入支数);
            sheet1.GetRow(12).GetCell(8).SetCellValue(一分厂套管N80出库支数);
            sheet1.GetRow(12).GetCell(9).SetCellValue(二分厂套管N80出库支数);
            sheet1.GetRow(12).GetCell(10).SetCellValue(五分厂套管N80出库支数);
            sheet1.GetRow(12).GetCell(11).SetCellValue(套管N80本期发出支数);
            sheet1.GetRow(12).GetCell(12).SetCellValue(套管N80本期结存支数);

            sheet1.GetRow(14).GetCell(3).SetCellValue(油管N80上期结存重量);
            sheet1.GetRow(14).GetCell(4).SetCellValue(一分厂油管N80入库量.ToString("0.000"));
            sheet1.GetRow(14).GetCell(5).SetCellValue(二分厂油管N80入库量.ToString("0.000"));
            sheet1.GetRow(14).GetCell(6).SetCellValue(五分厂油管N80入库量.ToString("0.000"));
            sheet1.GetRow(14).GetCell(7).SetCellValue(油管N80本期收入重量);
            sheet1.GetRow(14).GetCell(8).SetCellValue(一分厂油管N80出库量.ToString("0.000"));
            sheet1.GetRow(14).GetCell(9).SetCellValue(二分厂油管N80出库量.ToString("0.000"));
            sheet1.GetRow(14).GetCell(10).SetCellValue(五分厂油管N80出库量.ToString("0.000"));
            sheet1.GetRow(14).GetCell(11).SetCellValue(油管N80本期发出重量);
            sheet1.GetRow(14).GetCell(12).SetCellValue(油管N80本期结存重量);

            sheet1.GetRow(15).GetCell(3).SetCellValue(油管N80上期结存支数);
            sheet1.GetRow(15).GetCell(4).SetCellValue(一分厂油管N80入库支数);
            sheet1.GetRow(15).GetCell(5).SetCellValue(二分厂油管N80入库支数);
            sheet1.GetRow(15).GetCell(6).SetCellValue(五分厂油管N80入库支数);
            sheet1.GetRow(15).GetCell(7).SetCellValue(油管N80本期收入支数);
            sheet1.GetRow(15).GetCell(8).SetCellValue(一分厂油管N80出库支数);
            sheet1.GetRow(15).GetCell(9).SetCellValue(二分厂油管N80出库支数);
            sheet1.GetRow(15).GetCell(10).SetCellValue(五分厂油管N80出库支数);
            sheet1.GetRow(15).GetCell(11).SetCellValue(油管N80本期发出支数);
            sheet1.GetRow(15).GetCell(12).SetCellValue(油管N80本期结存支数);

            WriteToFile();
            Response.End();
        }
    }
}
